<?php
// 公共函数库
/**
 * 接收 post 参数
 * @param $key
 * @return bool|string
 */
function P($key) {
    return isset($_POST[$key]) ? trim($_POST[$key]) : false;
}

/**
 * 接收GET参数
 * @param $key
 * @return bool|string
 */
function G($key) {
    return isset($_GET[$key]) ? trim($_GET[$key]) : false;
}

/**
 * 输出错误信息，并结束进程
 * @param $msg
 */
function error($msg) {
    include 'header.php';
    echo '<div style="color: red; font-size: 18px;">'. $msg .'</div>';
    include 'footer.php';
    exit();
}

/**
 * 返回redis连接资源
 * @return null|Redis
 */
function redis_conn() {
    if( !isset($conn) ) {
        static $conn = null;
        $conn = new Redis();
        $conn->connect('127.0.0.1','6379');
    }
    return $conn;
}

/**
 * 判断用户是否登录,登录返回登录信息
 * @return bool|array
 */
function isLogin() {
    if(isset($_COOKIE['userid']) && isset($_COOKIE['username'])) {
        return array('userid' => $_COOKIE['userid'], 'username' => $_COOKIE['username']);
    }
    return false;
}

/**
 *  格式化时间戳 显示类似 XXX分钟前
 * @param $time
 * @return string
 */
function best_time($time) {
    $decr_time = time() - $time; //计算出秒差

    if($decr_time <= 0) {
        return abs($decr_time) . ' 秒之后';
    }
    if ($decr_time > 3600*24*365) {
        $str = floor( $decr_time / 3600*24*365) .' 年前';
    }elseif ($decr_time > 3600*24*12) {
        $str = floor( $decr_time / 3600*24*12) . ' 月前';
    }elseif ($decr_time > 3600*24) {
        $str = floor( $decr_time / 3600*24) . ' 天前';
    }elseif ($decr_time > 3600) {
        $str = floor( $decr_time / 3600) . ' 小时前';
    }elseif ( $decr_time > 60 ) {
        $str = floor( $decr_time / 60) . ' 分钟前';
    }else {
        $str = $decr_time . ' 秒前';
    }
    return $str;
}

/**
 * 默认生成8位随机字符串
 * @param int $num 生成的字符串长度
 * @return bool|string
 */
function str_code($num = 8) {
    if ( !is_int($num) || $num <= 0) return false;
    $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()-=';
    return substr(str_shuffle($str), 0, $num);
}
